/**
 * 
 */
package compilador.analizadorSemantico.tablaSimbolos;

import java.util.ArrayList;

/**
 * @author samsung
 *
 */
public class TablaSimboloSemantico  {

	//----------------------------------------------------------------------------------------
	//									Atributos
	//----------------------------------------------------------------------------------------
	
	private ArrayList<SimboloSemantico> simbolosSemanticos;
	
	//----------------------------------------------------------------------------------------
	//									Constructores
	//----------------------------------------------------------------------------------------
	
	public TablaSimboloSemantico(){
		this.simbolosSemanticos = new ArrayList<SimboloSemantico>();
	}
	
	//----------------------------------------------------------------------------------------
	//									Metodos
	//----------------------------------------------------------------------------------------

	public void agregarSimboloMetodo(String nombre, String ambito, String ret,
			ArrayList<String> params) {
		
		this.simbolosSemanticos.add(new SimboloSemantico(nombre, ambito, ret, params));

	}
	
	public void agregarSimboloGeneral(String nombre, String tipoDato,
			String ambito) {

		this.simbolosSemanticos.add(new SimboloSemantico(nombre, ambito, tipoDato));
	}

	public SimboloSemantico getSimbolo(String nombre, String ambito) {
		
		for (SimboloSemantico simbolo : simbolosSemanticos) {
			if(simbolo.getNombre().equals(nombre) && simbolo.getAmbito().equals(ambito))
				return new SimboloSemantico(simbolo.getNombre(), simbolo.getAmbito(), simbolo.getTipoDato());
		}
		
		return null;
	}

	public boolean esRepetido(String nombreR) {

		int cont = 0;
		
		for (SimboloSemantico simbolo : simbolosSemanticos)
			if (simbolo.getNombre().equals(nombreR)) 
				cont++;
		
		if(cont>1)
			return true;
		else
			return false;
	}

	/**
	 * Metodo que nos retorna el valor de simbolosSemanticos
	 * @return  simbolosSemanticos. Valor retornado
	 */
	public ArrayList<SimboloSemantico> getSimbolosSemanticos() {
		return simbolosSemanticos;
	}

}
